Technical Q&As


AMT_PE 24 - Storing an Array Name in a Field in Another Array (1-Aug-95)


Q I am having a problem accessing items from arrays with other arrays. I get a runtime error:
File 'SERVER DRIVE:PROJECTS:TEST:LBB PROJECT 
WITH AMTCX:SOURCES:ALPHADB.K'; Line 89 # K call: MESSAGE has no _COUNT!

I use the following code to extract the name of a particular array and make CurrentAlphaIndex refer to that particular array:

self.CorrectAlphaArray := self.AlphaArray;

self.CurrentAlphaIndex := (self.CorrectAlphaArray @ self.CurrentRec @ 3);

This is the line it stops working on:

while (loopIndex <= #(self.CurrentAlphaIndex @ LineNum @ 2)) loop

What gives?

A Because of the way the parser works (it works from right to left, instead of left to right), when you have several @ characters in the same statement, you have to use parentheses to specify how the expression should be parsed.

In other words, the parser is reading:

self.CurrentAlphaIndex @ LineNum @ 2

as:

self.CurrentAlphaIndex := (self.CorrectAlphaArray @ (self.CurrentRec @ 3));

However, what you mean is:

self.CurrentAlphaIndex := ((self.CorrectAlphaArray @ self.CurrentRec) @ 3);

This is also true for the other line:

while (loopIndex <= #(self.CurrentAlphaIndex @ LineNum @ 2)) loop

The solution is to use parentheses to specify what you want.

Technical Q&As
Previous Question | Contents | Next Question